library(pacman)
p_load(readxl, dplyr, tidyr, ggplot2, ggthemes)
dados <- read_excel("dados_tume.xlsx")
dados
## Source: local data frame [1,344 x 4]
##
## especie h dap cod
## (chr) (dbl) (dbl) (chr)
## 1 A1 15.5 8.1 NA
## 2 A1 21.2 12.3 NA
## 3 A1 7.5 6.4 11
## 4 A1 4.0 2.0 11
## 5 A1 18.0 12.3 NA
## 6 A1 16.0 9.1 X10
## 7 A1 16.0 8.8 X10
## 8 A1 20.0 13.1 NA
## 9 A1 21.5 15.5 NA
## 10 A1 21.0 14.1 NA
## .. ... ... ... ...
dados <- dados %>%
mutate(
g = (pi/40000)*(dap^2),
v = g*h*0.42
)
dados
## Source: local data frame [1,344 x 6]
##
## especie h dap cod g v
## (chr) (dbl) (dbl) (chr) (dbl) (dbl)
## 1 A1 15.5 8.1 NA 0.0051529974 0.0335460127
## 2 A1 21.2 12.3 NA 0.0118822888 0.1057998996
## 3 A1 7.5 6.4 11 0.0032169909 0.0101335213
## 4 A1 4.0 2.0 11 0.0003141593 0.0005277876
## 5 A1 18.0 12.3 NA 0.0118822888 0.0898301034
## 6 A1 16.0 9.1 X10 0.0065038822 0.0437060883
## 7 A1 16.0 8.8 X10 0.0060821234 0.0408718691
## 8 A1 20.0 13.1 NA 0.0134782179 0.1132170302
## 9 A1 21.5 15.5 NA 0.0188691909 0.1703887936
## 10 A1 21.0 14.1 NA 0.0156145009 0.1377198978
## .. ... ... ... ... ... ...
ggplot(data = dados) +
geom_point(aes(x = dap, y = h))
ggplot(data = dados) +
geom_point(aes(x = dap, y = h, color = especie))
ggplot(data = dados) +
geom_point(aes(x = dap, y = h, color = especie, size = v))
ggplot(data = dados) +
geom_point(aes(x = dap, y = h, size = v)) +
facet_wrap(~especie)
ggplot(dados, aes(dap, h, size = v)) +
geom_point() +
facet_wrap(~especie)
ggplot(data = dados) +
geom_point(aes(x = dap, y = h, color = v)) +
facet_wrap(~especie)
dados <- read_excel("base_vespa.xlsx")
dados
## Source: local data frame [140 x 17]
##
## Tratamento Individuo 1-Peciolo 1-Nervura 1-Caule 2-Peciolo 2-Nervura
## (chr) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
## 1 Actara d1 1 1 NA NA 1 1
## 2 Actara d1 2 NA NA NA NA NA
## 3 Actara d1 3 NA NA NA NA NA
## 4 Actara d1 4 NA NA NA NA NA
## 5 Actara d1 5 NA NA NA NA NA
## 6 Actara d1 6 NA NA NA NA NA
## 7 Actara d1 7 NA NA NA 2 NA
## 8 Actara d1 8 NA NA NA NA NA
## 9 Actara d1 9 NA NA NA NA NA
## 10 Actara d1 10 NA NA NA NA NA
## .. ... ... ... ... ... ... ...
## Variables not shown: 2-Caule (dbl), 3-Peciolo (dbl), 3-Nervura (dbl),
## 3-Caule (dbl), 4-Peciolo (dbl), 4-Nervura (dbl), 4-Caule (dbl),
## 5-Peciolo (dbl), 5-Nervura (dbl), 5-Caule (dbl)
dados <- read_excel("base_vespa.xlsx") %>%
gather("Local", "Galhas", 3:17) %>%
separate(Local, c("Coleta", "Local"))
Primeiro vamos processar os dados da última medição (Coleta 5) para verificar o nº total de galhas de cada tratamento, desconsiderando o local da galha. Nesse caso estou considerando apenas as mudas que foram atacadas e tiveram o desenvolvimento de galhas.
total <- dados %>%
filter(Coleta == 5) %>%
group_by(Tratamento, Individuo) %>%
summarise(Galhas = sum(Galhas, na.rm=T)) %>%
mutate(Galhas = replace(Galhas, Galhas == 0, NA))
total
## Source: local data frame [140 x 3]
## Groups: Tratamento [7]
##
## Tratamento Individuo Galhas
## (chr) (dbl) (dbl)
## 1 Actara d1 1 11
## 2 Actara d1 2 NA
## 3 Actara d1 3 4
## 4 Actara d1 4 NA
## 5 Actara d1 5 NA
## 6 Actara d1 6 NA
## 7 Actara d1 7 30
## 8 Actara d1 8 NA
## 9 Actara d1 9 NA
## 10 Actara d1 10 NA
## .. ... ... ...
O boxplot é um gráfico unidimensional, ou seja, precisamos de apenas uma variável para construí-lo. Entretanto, podemos usar variáveis categóricas para servir de agrupamento e replicar o gráfico para todos os níveis da variável. Por exemplo, no nosso banco de dados temos Galhas como variável quantitativa e Tratamento, Coleta e Local como variável qualitativa.
ggplot(total, aes("Total", Galhas)) +
geom_boxplot() +
theme_few()
A figura dá uma visão geral de todas as observações em um único boxplot, mas não nos explica muita coisa. A variável categórica nos permite subdividir os boxplots para todos os níveis de tratamentos e assim podemos compará-los.
ggplot(total, aes(Tratamento, Galhas)) +
geom_boxplot() +
theme_few()
Podemos também avaliar a variabilidade do nº de galhas por local. Para isso vamos incluir a variável Local no agrupamento.
local <- dados %>%
filter(Coleta == 5) %>%
group_by(Tratamento, Individuo, Local) %>%
summarise(Galhas = sum(Galhas, na.rm=T)) %>%
mutate(Galhas = replace(Galhas, Galhas == 0, NA))
local
## Source: local data frame [420 x 4]
## Groups: Tratamento, Individuo [140]
##
## Tratamento Individuo Local Galhas
## (chr) (dbl) (chr) (dbl)
## 1 Actara d1 1 Caule 2
## 2 Actara d1 1 Nervura 3
## 3 Actara d1 1 Peciolo 6
## 4 Actara d1 2 Caule NA
## 5 Actara d1 2 Nervura NA
## 6 Actara d1 2 Peciolo NA
## 7 Actara d1 3 Caule 1
## 8 Actara d1 3 Nervura 1
## 9 Actara d1 3 Peciolo 2
## 10 Actara d1 4 Caule NA
## .. ... ... ... ...
ggplot(local, aes(Tratamento, Galhas, fill = Local)) +
geom_boxplot() +
theme_few() +
scale_fill_brewer(palette = "Spectral")
Uma outra perspectiva é avaliar a evolução do total de galhas por coleta. Para isto basta incluir a variável Coleta no agrupamento. Para facilitar a visualização, vou excluir a primeira coleta. Podemos ainda adicionar os pontos que representam as observações para poder identificar quantas observações tem cada tratamento.
total_coleta <- dados %>%
filter(Coleta != 1 ) %>%
group_by(Tratamento, Coleta, Individuo) %>%
summarise(Galhas = sum(Galhas, na.rm=T)) %>%
mutate(Galhas = replace(Galhas, Galhas == 0, NA))
total_coleta
## Source: local data frame [560 x 4]
## Groups: Tratamento, Coleta [28]
##
## Tratamento Coleta Individuo Galhas
## (chr) (chr) (dbl) (dbl)
## 1 Actara d1 2 1 3
## 2 Actara d1 2 2 NA
## 3 Actara d1 2 3 NA
## 4 Actara d1 2 4 NA
## 5 Actara d1 2 5 NA
## 6 Actara d1 2 6 NA
## 7 Actara d1 2 7 2
## 8 Actara d1 2 8 NA
## 9 Actara d1 2 9 NA
## 10 Actara d1 2 10 NA
## .. ... ... ... ...
ggplot(total_coleta, aes(Tratamento, Galhas)) +
geom_boxplot() +
#geom_jitter(alpha = 0.4) +
facet_wrap(~ Coleta, labeller = label_both) +
theme_few() +
theme(axis.text.x = element_text(angle = 30, hjust = 0.5, vjust = 0.5))
dados
## Source: local data frame [2,100 x 5]
##
## Tratamento Individuo Coleta Local Galhas
## (chr) (dbl) (chr) (chr) (dbl)
## 1 Actara d1 1 1 Peciolo 1
## 2 Actara d1 2 1 Peciolo NA
## 3 Actara d1 3 1 Peciolo NA
## 4 Actara d1 4 1 Peciolo NA
## 5 Actara d1 5 1 Peciolo NA
## 6 Actara d1 6 1 Peciolo NA
## 7 Actara d1 7 1 Peciolo NA
## 8 Actara d1 8 1 Peciolo NA
## 9 Actara d1 9 1 Peciolo NA
## 10 Actara d1 10 1 Peciolo NA
## .. ... ... ... ... ...
A primeira sequência de gráficos está relacionada ao total de galhas encontradas nas mudas de cada tratamento. Nessa comparação, temos de considerar tratamentos como fatores e os locais onde a galha foi encontrada como níveis. Essa distinção vai nos ajuda a escolher a melhor forma de construir um gráfico de acordo com o que queremos mostrar.
total_trat <- dados %>%
filter(Coleta == 5) %>%
group_by(Tratamento) %>%
summarise(Galhas = sum(Galhas, na.rm=T))
total_trat
## Source: local data frame [7 x 2]
##
## Tratamento Galhas
## (chr) (dbl)
## 1 Actara d1 73
## 2 Actara d2 57
## 3 Actara d3 30
## 4 Evidence d1 27
## 5 Evidence d2 21
## 6 Evidence d3 12
## 7 Testemunha 77
ggplot(total_trat, aes(Tratamento, Galhas)) +
geom_bar(stat = "identity") +
theme_few()
Mas ainda temos a variável Local, certo? Podemos apresentá-la sem muito esforço.
total_trat_local <- dados %>%
filter(Coleta == 5) %>%
group_by(Tratamento, Local) %>%
summarise(Galhas = sum(Galhas, na.rm=T))
total_trat_local
## Source: local data frame [21 x 3]
## Groups: Tratamento [?]
##
## Tratamento Local Galhas
## (chr) (chr) (dbl)
## 1 Actara d1 Caule 13
## 2 Actara d1 Nervura 19
## 3 Actara d1 Peciolo 41
## 4 Actara d2 Caule 10
## 5 Actara d2 Nervura 9
## 6 Actara d2 Peciolo 38
## 7 Actara d3 Caule 7
## 8 Actara d3 Nervura 6
## 9 Actara d3 Peciolo 17
## 10 Evidence d1 Caule 6
## .. ... ... ...
ggplot(total_trat_local, aes(Tratamento, Galhas, fill = Local)) +
geom_bar(stat = "identity") +
theme_few() +
scale_fill_brewer(palette = "Spectral")
Podemos dar mais evidência aos níveis, transformando-os em barras.
ggplot(total_trat_local, aes(Tratamento, Galhas, fill = Local)) +
geom_bar(stat = "identity", position = "dodge") +
theme_few() +
scale_fill_brewer(palette = "Spectral")
Como alternativa, podemos subdividir os níveis em painéis e deixar o gráfico mais balanceado, ou seja, sem concentrar a informação em fatores ou níveis.
ggplot(total_trat_local, aes(Tratamento, Galhas )) +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~Local) +
theme_few() +
theme(axis.text.x = element_text(angle = 30, hjust = 0.5, vjust = 0.5))
Note que nos 3 gráficos anteriores o banco de dados para formação do gráfico é o mesmo, mas cada um dá ênfase em um aspecto diferente. A parte boa é que podemos modificá-los de acordo com o nosso interesse de uma forma rápida e bem simples.
Se quisermos adicionar o valor de cada nível ou fator na barra, temos de alterar o banco de dados para que ele coincida com o que queremos mostrar.
ggplot(total_trat, aes(Tratamento, Galhas)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Galhas), vjust = -0.2) +
theme_few()
Para a próxima figura temos de criar uma coluna que informa a posição em que o valor deve ficar no eixo y, uma vez que ele deve estar exatamente no centro do respectivo compartimento da barra.
total_trat_local_y <- total_trat_local %>%
mutate(Galhas_y = replace(cumsum(Galhas) - (0.5*Galhas),
Galhas == 0, NA))
ggplot(total_trat_local_y, aes(Tratamento, Galhas, fill = Local)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Galhas, y = Galhas_y)) +
theme_few() +
scale_fill_brewer(palette = "Spectral")
ggplot(total_trat_local, aes(Tratamento, Galhas, fill = Local)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = Galhas),
position = position_dodge(width=0.9), vjust = -0.2) +
theme_few() +
scale_fill_brewer(palette = "Spectral")
ggplot(total_trat_local, aes(Tratamento, Galhas )) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = Galhas), vjust = -0.2) +
facet_wrap(~Local) +
theme_few() +
theme(axis.text.x = element_text(angle = 30, hjust = 0.5, vjust = 0.5))
Vamos resumir novamente os dados em função da média e acrescentar o erro padrão da média.
media_trat_desv <- dados %>%
filter(Coleta == 5) %>%
group_by(Tratamento) %>%
summarise(desv = sd(Galhas, na.rm=T)/sqrt(n()),
Galhas = mean(Galhas, na.rm=T))
media_trat_desv
## Source: local data frame [7 x 3]
##
## Tratamento desv Galhas
## (chr) (dbl) (dbl)
## 1 Actara d1 0.4799351 4.055556
## 2 Actara d2 0.4893473 3.352941
## 3 Actara d3 0.1331730 2.307692
## 4 Evidence d1 0.5889188 3.857143
## 5 Evidence d2 0.2667039 2.625000
## 6 Evidence d3 0.1632993 2.000000
## 7 Testemunha 0.3601529 3.347826
Após criar o data frame com o desvio, vamos colocar a informação no gráfico.
ggplot(media_trat_desv, aes(Tratamento, Galhas)) +
geom_bar(stat = "identity") +
geom_errorbar(aes(ymin = Galhas - desv,
ymax = Galhas + desv), width = 0.4) +
theme_few()
media_trat_local_desv <- dados %>%
filter(Coleta == 5) %>%
group_by(Tratamento, Local) %>%
summarise(desv = sd(Galhas, na.rm=T)/sqrt(n()),
Galhas = median(Galhas, na.rm=T))
media_trat_local_desv
## Source: local data frame [21 x 4]
## Groups: Tratamento [?]
##
## Tratamento Local desv Galhas
## (chr) (chr) (dbl) (dbl)
## 1 Actara d1 Caule 0.3291403 2
## 2 Actara d1 Nervura 0.8276473 3
## 3 Actara d1 Peciolo 1.0200373 4
## 4 Actara d2 Caule 0.2708013 1
## 5 Actara d2 Nervura 0.2813657 2
## 6 Actara d2 Peciolo 1.1751393 4
## 7 Actara d3 Caule 0.1118034 2
## 8 Actara d3 Nervura 0.0000000 2
## 9 Actara d3 Peciolo 0.2972092 3
## 10 Evidence d1 Caule 0.2236068 2
## .. ... ... ... ...
ggplot(media_trat_local_desv, aes(Tratamento, Galhas, fill = Local)) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(aes(ymin = Galhas - desv, ymax = Galhas + desv),
position = position_dodge(width=0.9), width = 0.4) +
theme_few() +
scale_fill_brewer(palette = "Spectral")
ggplot(media_trat_local_desv, aes(Tratamento, Galhas )) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(aes(ymin = Galhas - desv,
ymax = Galhas + desv), width = 0.4) +
facet_wrap(~Local) +
theme_few() +
theme(axis.text.x = element_text(angle = 30, hjust = 0.5, vjust = 0.5))